home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import javax.swing.JComponent;
- import javax.swing.JScrollBar;
- import javax.swing.JScrollPane;
- import javax.swing.JViewport;
- import javax.swing.KeyStroke;
- import javax.swing.LookAndFeel;
- import javax.swing.ScrollPaneConstants;
- import javax.swing.UIManager;
- import javax.swing.border.Border;
- import javax.swing.event.ChangeListener;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.ScrollPaneUI;
- import javax.swing.plaf.UIResource;
-
- public class BasicScrollPaneUI extends ScrollPaneUI implements ScrollPaneConstants {
- protected JScrollPane scrollpane;
- protected ChangeListener vsbChangeListener;
- protected ChangeListener hsbChangeListener;
- protected ChangeListener viewportChangeListener;
- protected PropertyChangeListener spPropertyChangeListener;
-
- protected ChangeListener createHSBChangeListener() {
- return new HSBChangeListener(this);
- }
-
- protected PropertyChangeListener createPropertyChangeListener() {
- return new PropertyChangeHandler(this);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicScrollPaneUI();
- }
-
- protected ChangeListener createVSBChangeListener() {
- return new VSBChangeListener(this);
- }
-
- protected ChangeListener createViewportChangeListener() {
- return new ViewportChangeHandler(this);
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return new Dimension(32767, 32767);
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- return null;
- }
-
- protected void installDefaults(JScrollPane var1) {
- LookAndFeel.installBorder(var1, "ScrollPane.border");
- LookAndFeel.installColorsAndFont(var1, "ScrollPane.background", "ScrollPane.foreground", "ScrollPane.font");
- Border var2 = var1.getViewportBorder();
- if (var2 == null || var2 instanceof UIResource) {
- var2 = UIManager.getBorder("ScrollPane.viewportBorder");
- var1.setViewportBorder(var2);
- }
-
- }
-
- protected void installKeyboardActions(JScrollPane var1) {
- ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollUp", 1, -1), KeyStroke.getKeyStroke(33, 0), 1);
- ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollDown", 1, 1), KeyStroke.getKeyStroke(34, 0), 1);
- ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollLeft", 0, -1), KeyStroke.getKeyStroke(33, 2), 1);
- ((JComponent)var1).registerKeyboardAction(new ScrollAction(this, "ScrollDown", 0, 1), KeyStroke.getKeyStroke(34, 2), 1);
- ((JComponent)var1).registerKeyboardAction(new ScrollHomeAction(this, "ScrollHome"), KeyStroke.getKeyStroke(36, 2), 1);
- ((JComponent)var1).registerKeyboardAction(new ScrollEndAction(this, "ScrollEnd"), KeyStroke.getKeyStroke(35, 2), 1);
- }
-
- protected void installListeners(JScrollPane var1) {
- this.vsbChangeListener = this.createVSBChangeListener();
- this.hsbChangeListener = this.createHSBChangeListener();
- this.viewportChangeListener = this.createViewportChangeListener();
- this.spPropertyChangeListener = this.createPropertyChangeListener();
- JViewport var2 = this.scrollpane.getViewport();
- JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
- JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
- if (var2 != null) {
- var2.addChangeListener(this.viewportChangeListener);
- }
-
- if (var3 != null) {
- var3.getModel().addChangeListener(this.vsbChangeListener);
- }
-
- if (var4 != null) {
- var4.getModel().addChangeListener(this.hsbChangeListener);
- }
-
- this.scrollpane.addPropertyChangeListener(this.spPropertyChangeListener);
- }
-
- public void installUI(JComponent var1) {
- this.scrollpane = (JScrollPane)var1;
- this.installDefaults(this.scrollpane);
- this.installListeners(this.scrollpane);
- this.installKeyboardActions(this.scrollpane);
- }
-
- public void paint(Graphics var1, JComponent var2) {
- Border var3 = this.scrollpane.getViewportBorder();
- if (var3 != null) {
- Rectangle var4 = this.scrollpane.getViewportBorderBounds();
- var3.paintBorder(this.scrollpane, var1, var4.x, var4.y, var4.width, var4.height);
- }
-
- }
-
- protected void syncScrollPaneWithViewport() {
- JViewport var1 = this.scrollpane.getViewport();
- JScrollBar var2 = this.scrollpane.getVerticalScrollBar();
- JScrollBar var3 = this.scrollpane.getHorizontalScrollBar();
- JViewport var4 = this.scrollpane.getRowHeader();
- JViewport var5 = this.scrollpane.getColumnHeader();
- if (var1 != null) {
- Dimension var6 = var1.getExtentSize();
- Dimension var7 = var1.getViewSize();
- Point var8 = var1.getViewPosition();
- if (var2 != null) {
- int var9 = var6.height;
- int var10 = var7.height;
- int var11 = Math.max(0, Math.min(var8.y, var10 - var9));
- var2.setValues(var11, var9, 0, var10);
- }
-
- if (var3 != null) {
- int var12 = var6.width;
- int var15 = var7.width;
- int var16 = Math.max(0, Math.min(var8.x, var15 - var12));
- var3.setValues(var16, var12, 0, var15);
- }
-
- if (var4 != null) {
- Point var13 = var4.getViewPosition();
- var13.y = var1.getViewPosition().y;
- var4.setViewPosition(var13);
- }
-
- if (var5 != null) {
- Point var14 = var5.getViewPosition();
- var14.x = var1.getViewPosition().x;
- var5.setViewPosition(var14);
- }
- }
-
- }
-
- protected void uninstallDefaults(JScrollPane var1) {
- LookAndFeel.uninstallBorder(this.scrollpane);
- if (this.scrollpane.getViewportBorder() instanceof UIResource) {
- this.scrollpane.setViewportBorder((Border)null);
- }
-
- }
-
- protected void uninstallKeyboardActions(JScrollPane var1) {
- ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(33, 0));
- ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(34, 0));
- ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(33, 2));
- ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(34, 2));
- ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(36, 2));
- ((JComponent)var1).unregisterKeyboardAction(KeyStroke.getKeyStroke(35, 2));
- }
-
- protected void uninstallListeners(JComponent var1) {
- JViewport var2 = this.scrollpane.getViewport();
- JScrollBar var3 = this.scrollpane.getVerticalScrollBar();
- JScrollBar var4 = this.scrollpane.getHorizontalScrollBar();
- if (var2 != null) {
- var2.removeChangeListener(this.viewportChangeListener);
- }
-
- if (var3 != null) {
- var3.getModel().removeChangeListener(this.vsbChangeListener);
- }
-
- if (var4 != null) {
- var4.getModel().removeChangeListener(this.hsbChangeListener);
- }
-
- this.scrollpane.removePropertyChangeListener(this.spPropertyChangeListener);
- this.vsbChangeListener = null;
- this.hsbChangeListener = null;
- this.viewportChangeListener = null;
- this.spPropertyChangeListener = null;
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults(this.scrollpane);
- this.uninstallListeners(this.scrollpane);
- this.uninstallKeyboardActions(this.scrollpane);
- this.scrollpane = null;
- }
-
- protected void updateColumnHeader(PropertyChangeEvent var1) {
- JViewport var2 = (JViewport)var1.getNewValue();
- if (var2 != null) {
- JViewport var3 = this.scrollpane.getViewport();
- Point var4 = var2.getViewPosition();
- var4.x = var3 != null ? var3.getViewPosition().x : 0;
- var2.setViewPosition(var4);
- this.scrollpane.add(var2, "COLUMN_HEADER");
- }
-
- }
-
- protected void updateRowHeader(PropertyChangeEvent var1) {
- JViewport var2 = (JViewport)var1.getNewValue();
- if (var2 != null) {
- JViewport var3 = this.scrollpane.getViewport();
- Point var4 = var2.getViewPosition();
- var4.y = var3 != null ? var3.getViewPosition().y : 0;
- var2.setViewPosition(var4);
- }
-
- }
-
- protected void updateScrollBarDisplayPolicy(PropertyChangeEvent var1) {
- this.scrollpane.revalidate();
- this.scrollpane.repaint();
- }
-
- protected void updateViewport(PropertyChangeEvent var1) {
- JViewport var2 = (JViewport)var1.getOldValue();
- JViewport var3 = (JViewport)var1.getNewValue();
- if (var2 != null) {
- var2.removeChangeListener(this.viewportChangeListener);
- }
-
- if (var3 != null) {
- Point var4 = var3.getViewPosition();
- var4.x = Math.max(var4.x, 0);
- var4.y = Math.max(var4.y, 0);
- var3.setViewPosition(var4);
- var3.addChangeListener(this.viewportChangeListener);
- }
-
- }
- }
-